*** Per aspera ad astra – Eine politikwissenschaftliche Analyse der Akzeptanz des Gendersterns in der deutschen Bevölkerung auf Basis einer Online-Umfrage
*** erschienen in Politische Vierteljahresschrift PVS 2022
*** Sebastian Jäckle, Universität Freiburg

*** Dieses Do-File erstellt sämtliche Auswertungen, Grafiken und Analysen aus dem Artikel

* Installieren von MCAR-Test Ado-File --> muss per Hand installiert werden!
*findit  mcartest

* Installieren von benötigten Paketen via SSC
*ssc install mimrgns, replace
*ssc install estout, replace
*ssc install fitstat, replace
*ssc install coefplot, replace

clear all

* Pfad zum Replicvation-Ordner setzen
cd "YOUR-PATH\Replication"

* data from https://www.politikpanel.uni-freiburg.de/
use "data\gendern.dta", replace

label define gendern 0 "keine Angabe" 1 "Genderstern" 2 "Gen. Maskulinum", replace
label value v_942 gendern

* Ausland droppen
	drop if v_19 == 0
* droppen wenn AV nicht bis zur ersten Seite weitergeklickt wurde
	drop if v_942 == .
* drop wenn Alter == 0
	drop if v_125 == 0

* Variablen erstellen
	* highest educational attainment 3 level
	recode v_20 (1 2 9=1) (3 5=2) (4 7 10 11 12=3), gen(edu_3)
	label define edu_3 1 "niedrig" 2 "mittel" 3 "hoch"
	label values edu_3 edu_3
	label variable edu_3 "Höchster Bildungsabschluss"

	* Sonntagsfrage CDU, SPD, Grüne, FDP, Linke, AfD, CSU, FW, Basis, Die Partei, VOLT, Sonstige + weiß nicht, wahlzettel ungültig + nicht wählen , nicht wahlberechtigt	
	recode v_1143 (	16 = 11) (11/15 17/96 = 12) (97/98 = 13) (99 = 14), gen(sonntagsfrage)
	label define sonntagsfrage_neu 1 "CDU" 2 "SPD" 3 "Grüne" 4 "FDP" 5 "Linke" 6 "AfD" 7 "CSU" 8 "Freie Wähler" 9 "dieBasis" 10 "die Partei" 11 "VOLT" 12 "Sonstige" 13 `" "nicht wählen" " oder ungültig" "' 14 `" "nicht" "wahlberechtigt" "', replace	
	label values sonntagsfrage sonntagsfrage_neu
	label variable sonntagsfrage "Sonntagsfrage"

	* weiß nicht als Mittelkategorie
	recode v_1086 (2 = 3) (3 = 2), gen(v_1086_recode)
	recode v_1088 (2 = 3) (3 = 2), gen(v_1088_recode)
	recode v_1090 (2 = 3) (3 = 2), gen(v_1090_recode)

	label define v_1086_recode 1 "stimme zu" 2 "weiß nicht" 3 "stimme nicht zu"
	label values v_1086_recode v_1086_recode
	label values v_1088_recode v_1086_recode
	label values v_1090_recode v_1086_recode
	
	label define v_1131 7 "trifft nicht zu", modify
	
	label variable v_806 "Förderung arme Kinder"
	label variable v_808 "Inklusion an Schulen"
	label variable v_811 "Dtl. macht genug für Klimaschutz"
	label variable v_816 "polit. Entsch. an 1,5° ausrichten"
	label variable v_1059 "Kurzstreckenflüge verbieten"
	label variable v_1061 "Massentierhaltung verbieten"
	label variable v_1086_recode "Gendern in Behörden verbieten"
	label variable v_1088_recode "Landeslisten Frau/Mann"
	label variable v_1090_recode "Frauenquote Führungspos."
	
	* gender recode
	recode v_370 (0 = .)

	* Migrationshintergrund recode
	recode v_57 (2=0)

label variable v_773 "links = 1; rechts = 11"
label variable v_774 "GAL = 1; TAN = 11"



* missings (--> 1) für jede Variable		
misstable sum, gen(miss_)			
			
/*
vgl. https://www.ssc.wisc.edu/sscc/pubs/stata_mi_impute.htm
unab numvars: *
unab missvars: v_773-v_1090_recode		

foreach var of local missvars {
local covars: list numvars - var
display _newline(3) "logit missingness of `var' on `covars'"
logit miss_`var' `covars'
foreach nvar of local covars {
display _newline(3) "ttest of `nvar' by missingness of `var'"
ttest `nvar', by(miss_`var')
}
}	
*/



* multiple imputation
mi set flong

*  missing tables
 #delimit ;
 mi misstable summ 	v_942
					v_773 
					v_774 
					v_667
					v_668
					v_669
					v_670
					v_671
					v_805
					v_907
					v_806 
					v_808 
					v_1054 
					v_1056 
					v_811 
					v_816 
					v_1059 
					v_1061 
					v_818
					v_819
					v_820
					v_887 
					v_908 
					v_909
					v_821
					v_1086_recode
					v_1088_recode
					v_1090_recode
					sonntagsfrage
					edu_3
					v_125 
					v_370 
					v_57 
					v_1123-v_1131 
					v_19 
					v_936 
					parteineigung;
			#delimit cr

		
			
 #delimit ;
 mi misstable patterns v_942
					v_773 
					v_774 
					v_667
					v_668
					v_669
					v_670
					v_671
					v_805
					v_907
					v_806 
					v_808 
					v_1054 
					v_1056 
					v_811 
					v_816 
					v_1059 
					v_1061 
					v_818
					v_819
					v_820
					v_887 
					v_908 
					v_909
					v_821
					v_1086_recode
					v_1088_recode
					v_1090_recode
					sonntagsfrage
					edu_3
					v_125 
					v_370 
					v_57 
					v_1123-v_1131 
					v_19 
					v_936 
					parteineigung;
			#delimit cr	

		
			
			
* register variables to be imputed
 #delimit ;
 mi register imputed 
					v_773 
					v_774 
					v_667
					v_668
					v_669
					v_670
					v_671
					v_805
					v_907
					v_806 
					v_808 
					v_1054 
					v_1056 
					v_811 
					v_816 
					v_1059 
					v_1061 
					v_818
					v_819
					v_820
					v_887 
					v_908 
					v_909
					v_821
					v_1086_recode
					v_1088_recode
					v_1090_recode
					sonntagsfrage
					edu_3
					v_125 
					v_370 
					v_57 
					v_1123-v_1131 
					v_19 
					v_936 
					parteineigung
					;
			#delimit cr	

* MAR-Test
#delimit ;
mcartest v_942
					v_773 
					v_774 
					v_667
					v_668
					v_669
					v_670
					v_671
					v_805
					v_907
					v_806 
					v_808 
					v_1054 
					v_1056 
					v_811 
					v_816 
					v_1059 
					v_1061 
					v_818
					v_819
					v_820
					v_887 
					v_908 
					v_909
					v_821
					v_1086_recode
					v_1088_recode
					v_1090_recode
					sonntagsfrage
					edu_3
					v_125 
					v_370 
					v_57 
					v_1123-v_1131 
					v_19 
					v_936 
					parteineigung;
			#delimit cr	

			
* nur Variablen, die am Ende in Reg drin sind			

* zunächst test der einzelnen Teile der Imputationsmodelle
set matsize 10000

* Littles Test of MAR
mcartest  v_370 edu_3 v_773 v_774   v_1131  v_806 v_808 v_816 v_811 v_1059 v_1061 v_936 v_1086_recode v_1088_recode  v_1090_recode v_125


// mlogit v_942 v_773 v_774 i.v_1086_recode  i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode i.v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19
// reg v_773 i.v_942 v_774 i.v_1086_recode  i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode i.v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// reg v_774 i.v_942 v_773 i.v_1086_recode  i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode i.v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// ologit v_1086_recode v_774 i.v_942 v_773   i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode i.v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// ologit v_1088_recode v_774 i.v_942 v_773   i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1086_recode i.v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// ologit v_1090_recode v_774 i.v_942 v_773   i.edu_3 i.sonntagsfrage v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode i.v_1086_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// mlogit sonntagsfrage  i.v_1086_recode v_774 i.v_942 v_773   i.edu_3  v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 
// mlogit v_19 i.sonntagsfrage  i.v_1086_recode v_774 i.v_942 v_773   i.edu_3  v_125 v_806 v_808 v_816 v_1059 v_1061 i.v_1088_recode v_1090_recode i.v_936 i.v_370 i.v_1131 i.v_19 

#delimit ;			
 mi impute chained 
		(mlogit)  v_370 edu_3
		(pmm, knn(10)) v_773 v_774  sonntagsfrage  v_1131 v_19
		(ologit) v_806 v_808 v_816 v_811 v_1059 v_1061 v_936 v_1086_recode v_1088_recode  v_1090_recode
		(truncreg, ll(12) ul(100)) v_125 = i.v_942
		, add(10) rseed(1492)   dots noisily augment;
#delimit cr			

* checken der multiplen imputation
	* vergleich mit den real, observierten Daten für kategoriale Variablen via Barplots


	foreach var of varlist v_370 edu_3  sonntagsfrage v_1131 v_19 v_806 v_808 v_816 v_1059 v_1061 v_936 v_1086_recode v_1088_recode v_1090_recode v_811 {
	local vtext : variable label `var' 
	if `"`vtext'"' == "" local vtext "`var'" 
	mi xeq 0: tab `var'
	mi xeq 1/10: tab `var' if miss_`var'
	mi xeq 0: graph bar (percent), bar(1, fcolor(red)) over(`var' , label(angle(90) labsize(vsmall))) ytitle("Prozent", size(small)) title(`"Originaldaten"', size(small)); graph save "dump\chk`var'_0", replace
	forval i=1/10 {
	mi xeq `i': graph bar (percent) if miss_`var', over(`var', label(angle(90) labsize(vsmall))) ytitle("Prozent", size(small)) title(`"Imputation `i'"', size(small)); graph save "dump\chk`var'_`i'", replace
	}
	}

	graph combine "dump\chkv_370_0.gph" "dump\chkv_370_1.gph" "dump\chkv_370_2.gph" "dump\chkv_370_3.gph" "dump\chkv_370_4.gph" "dump\chkv_370_5.gph" "dump\chkv_370_6.gph" "dump\chkv_370_7.gph" "dump\chkv_370_8.gph" "dump\chkv_370_9.gph" "dump\chkv_370_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2a.emf", replace
	graph export "output\fig_A2a.pdf", replace
	
	graph combine "dump\chkedu_3_0.gph" "dump\chkedu_3_1.gph" "dump\chkedu_3_2.gph" "dump\chkedu_3_3.gph" "dump\chkedu_3_4.gph" "dump\chkedu_3_5.gph" "dump\chkedu_3_6.gph" "dump\chkedu_3_7.gph" "dump\chkedu_3_8.gph" "dump\chkedu_3_9.gph" "dump\chkedu_3_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2b.emf", replace
	graph export "output\fig_A2b.pdf", replace
	
	graph combine "dump\chksonntagsfrage_0.gph" "dump\chksonntagsfrage_1.gph" "dump\chksonntagsfrage_2.gph" "dump\chksonntagsfrage_3.gph" "dump\chksonntagsfrage_4.gph" "dump\chksonntagsfrage_5.gph" "dump\chksonntagsfrage_6.gph" "dump\chksonntagsfrage_7.gph" "dump\chksonntagsfrage_8.gph" "dump\chksonntagsfrage_9.gph" "dump\chksonntagsfrage_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2c.emf", replace
	graph export "output\fig_A2c.pdf", replace
	
	graph combine "dump\chkv_1131_0.gph" "dump\chkv_1131_1.gph" "dump\chkv_1131_2.gph" "dump\chkv_1131_3.gph" "dump\chkv_1131_4.gph" "dump\chkv_1131_5.gph" "dump\chkv_1131_6.gph" "dump\chkv_1131_7.gph" "dump\chkv_1131_8.gph" "dump\chkv_1131_9.gph" "dump\chkv_1131_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2d.emf", replace
	graph export "output\fig_A2d.pdf", replace
	
	graph combine "dump\chkv_19_0.gph" "dump\chkv_19_1.gph" "dump\chkv_19_2.gph" "dump\chkv_19_3.gph" "dump\chkv_19_4.gph" "dump\chkv_19_5.gph" "dump\chkv_19_6.gph" "dump\chkv_19_7.gph" "dump\chkv_19_8.gph" "dump\chkv_19_9.gph" "dump\chkv_19_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2e.emf", replace
	graph export "output\fig_A2e.pdf", replace
	
	graph combine "dump\chkv_806_0.gph" "dump\chkv_806_1.gph" "dump\chkv_806_2.gph" "dump\chkv_806_3.gph" "dump\chkv_806_4.gph" "dump\chkv_806_5.gph" "dump\chkv_806_6.gph" "dump\chkv_806_7.gph" "dump\chkv_806_8.gph" "dump\chkv_806_9.gph" "dump\chkv_806_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2f.emf", replace
	graph export "output\fig_A2f.pdf", replace
	
	graph combine "dump\chkv_808_0.gph" "dump\chkv_808_1.gph" "dump\chkv_808_2.gph" "dump\chkv_808_3.gph" "dump\chkv_808_4.gph" "dump\chkv_808_5.gph" "dump\chkv_808_6.gph" "dump\chkv_808_7.gph" "dump\chkv_808_8.gph" "dump\chkv_808_9.gph" "dump\chkv_808_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2g.emf", replace
	graph export "output\fig_A2g.pdf", replace
	
	graph combine "dump\chkv_816_0.gph" "dump\chkv_816_1.gph" "dump\chkv_816_2.gph" "dump\chkv_816_3.gph" "dump\chkv_816_4.gph" "dump\chkv_816_5.gph" "dump\chkv_816_6.gph" "dump\chkv_816_7.gph" "dump\chkv_816_8.gph" "dump\chkv_816_9.gph" "dump\chkv_816_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2h.emf", replace
	graph export "output\fig_A2h.pdf", replace
	
	graph combine "dump\chkv_1059_0.gph" "dump\chkv_1059_1.gph" "dump\chkv_1059_2.gph" "dump\chkv_1059_3.gph" "dump\chkv_1059_4.gph" "dump\chkv_1059_5.gph" "dump\chkv_1059_6.gph" "dump\chkv_1059_7.gph" "dump\chkv_1059_8.gph" "dump\chkv_1059_9.gph" "dump\chkv_1059_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2i.emf", replace
	graph export "output\fig_A2i.pdf", replace
	
	graph combine "dump\chkv_1061_0.gph" "dump\chkv_1061_1.gph" "dump\chkv_1061_2.gph" "dump\chkv_1061_3.gph" "dump\chkv_1061_4.gph" "dump\chkv_1061_5.gph" "dump\chkv_1061_6.gph" "dump\chkv_1061_7.gph" "dump\chkv_1061_8.gph" "dump\chkv_1061_9.gph" "dump\chkv_1061_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2j.emf", replace
	graph export "output\fig_A2j.pdf", replace
	
	graph combine "dump\chkv_936_0.gph" "dump\chkv_936_1.gph" "dump\chkv_936_2.gph" "dump\chkv_936_3.gph" "dump\chkv_936_4.gph" "dump\chkv_936_5.gph" "dump\chkv_936_6.gph" "dump\chkv_936_7.gph" "dump\chkv_936_8.gph" "dump\chkv_936_9.gph" "dump\chkv_936_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2k.emf", replace
	graph export "output\fig_A2k.pdf", replace
	
	* not used
	* graph combine "dump\chkv_1086_recode_0.gph" "dump\chkv_1086_recode_1.gph" "dump\chkv_1086_recode_2.gph" "dump\chkv_1086_recode_3.gph" "dump\chkv_1086_recode_4.gph" "dump\chkv_1086_recode_5.gph" "dump\chkv_1086_recode_6.gph" "dump\chkv_1086_recode_7.gph" "dump\chkv_1086_recode_8.gph" "dump\chkv_1086_recode_9.gph" "dump\chkv_1086_recode_10.gph" , col(3) xsize(5) ysize(7)
	* graph export "output\v_1086_recode.emf", replace
	* graph export "output\v_1086_recode.pdf", replace
	
	graph combine "dump\chkv_1088_recode_0.gph" "dump\chkv_1088_recode_1.gph" "dump\chkv_1088_recode_2.gph" "dump\chkv_1088_recode_3.gph" "dump\chkv_1088_recode_4.gph" "dump\chkv_1088_recode_5.gph" "dump\chkv_1088_recode_6.gph" "dump\chkv_1088_recode_7.gph" "dump\chkv_1088_recode_8.gph" "dump\chkv_1088_recode_9.gph" "dump\chkv_1088_recode_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2l.emf", replace
	graph export "output\fig_A2l.pdf", replace
	
	graph combine "dump\chkv_1090_recode_0.gph" "dump\chkv_1090_recode_1.gph" "dump\chkv_1090_recode_2.gph" "dump\chkv_1090_recode_3.gph" "dump\chkv_1090_recode_4.gph" "dump\chkv_1090_recode_5.gph" "dump\chkv_1090_recode_6.gph" "dump\chkv_1090_recode_7.gph" "dump\chkv_1090_recode_8.gph" "dump\chkv_1090_recode_9.gph" "dump\chkv_1090_recode_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2m.emf", replace
	graph export "output\fig_A2m.pdf", replace
	
	graph combine "dump\chkv_811_0.gph" "dump\chkv_811_1.gph" "dump\chkv_811_2.gph" "dump\chkv_811_3.gph" "dump\chkv_811_4.gph" "dump\chkv_811_5.gph" "dump\chkv_811_6.gph" "dump\chkv_811_7.gph" "dump\chkv_811_8.gph" "dump\chkv_811_9.gph" "dump\chkv_811_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A2n.emf", replace
	graph export "output\fig_A2n.pdf", replace

		* vergleich mit den real, observierten Daten für (quasi)metrische Variablen via Kernel Density Estimate
	foreach var of varlist v_125 v_773 v_774 {
	local vtext : variable label `var' 
	if `"`vtext'"' == "" local vtext "`var'" 
	mi xeq 0: sum `var'
	mi xeq 1/10: sum `var' if miss_`var'
	mi xeq 0: hist `var' , title(`"`vtext'-Originaldaten"') bcolor(red); graph save "dump\chk`var'_0", replace
	forval i=1/10 {
	mi xeq `i': hist `var' if miss_`var', title(`"`vtext'-Imputation `i'"'); graph save "dump\chk`var'_`i'", replace
	}
	}
	
	* not used
// 	graph combine "dump\chkv_773_0.gph" "dump\chkv_773_1.gph" "dump\chkv_773_2.gph" "dump\chkv_773_3.gph" "dump\chkv_773_4.gph" "dump\chkv_773_5.gph" "dump\chkv_773_6.gph" "dump\chkv_773_7.gph" "dump\chkv_773_8.gph" "dump\chkv_773_9.gph" "dump\chkv_773_10.gph" , col(3) xsize(5) ysize(7)
// 	graph export "output\v_773.emf", replace
// 	graph export "output\v_773.pdf", replace
//	
// 	graph combine "dump\chkv_774_0.gph" "dump\chkv_774_1.gph" "dump\chkv_774_2.gph" "dump\chkv_774_3.gph" "dump\chkv_774_4.gph" "dump\chkv_774_5.gph" "dump\chkv_774_6.gph" "dump\chkv_774_7.gph" "dump\chkv_774_8.gph" "dump\chkv_774_9.gph" "dump\chkv_774_10.gph" , col(3) xsize(5) ysize(7)
// 	graph export "output\v_774.emf", replace
// 	graph export "output\v_774.pdf", replace
//	
// 	graph combine "dump\chkv_125_0.gph" "dump\chkv_125_1.gph" "dump\chkv_125_2.gph" "dump\chkv_125_3.gph" "dump\chkv_125_4.gph" "dump\chkv_125_5.gph" "dump\chkv_125_6.gph" "dump\chkv_125_7.gph" "dump\chkv_125_8.gph" "dump\chkv_125_9.gph" "dump\chkv_125_10.gph" , col(3) xsize(5) ysize(7)
// 	graph export "output\v_125.emf", replace
// 	graph export "output\v_125.pdf", replace
	

	
	#delimit ;
				kdensity v_773 if _mi_m == 0, bwidth(.5) 
	addplot(	kdensity v_773 if _mi_m == 1, bwidth(.5) || 
				kdensity v_773 if _mi_m == 2, bwidth(.5) ||
				kdensity v_773 if _mi_m == 3, bwidth(.5) ||
				kdensity v_773 if _mi_m == 4, bwidth(.5) ||
				kdensity v_773 if _mi_m == 5, bwidth(.5) ||
				kdensity v_773 if _mi_m == 6, bwidth(.5) ||
				kdensity v_773 if _mi_m == 7, bwidth(.5) ||
				kdensity v_773 if _mi_m == 8, bwidth(.5) ||
				kdensity v_773 if _mi_m == 9, bwidth(.5) ||
				kdensity v_773 if _mi_m == 10, bwidth(.5))
				legend(ring(0) pos(2) 
				label(1 "Originaldaten") 
				label(2 "Imputation 1") 
				label(3 "Imputation 2")
				label(4 "Imputation 3") 
				label(5 "Imputation 4")
				label(6 "Imputation 5") 
				label(7 "Imputation 6")
				label(8 "Imputation 7") 
				label(9 "Imputation 8")
				label(10 "Imputation 9") 
				label(11 "Imputation 10"))
				;
#delimit cr		
graph export "output\fig_A2o.emf", replace
graph export "output\fig_A2o.pdf", replace

	#delimit ;
				kdensity v_774 if _mi_m == 0, bwidth(.5) 
	addplot(	kdensity v_774 if _mi_m == 1, bwidth(.5) || 
				kdensity v_774 if _mi_m == 2, bwidth(.5) ||
				kdensity v_774 if _mi_m == 3, bwidth(.5) ||
				kdensity v_774 if _mi_m == 4, bwidth(.5) ||
				kdensity v_774 if _mi_m == 5, bwidth(.5) ||
				kdensity v_774 if _mi_m == 6, bwidth(.5) ||
				kdensity v_774 if _mi_m == 7, bwidth(.5) ||
				kdensity v_774 if _mi_m == 8, bwidth(.5) ||
				kdensity v_774 if _mi_m == 9, bwidth(.5) ||
				kdensity v_774 if _mi_m == 10, bwidth(.5))
				legend(ring(0) pos(2) 
				label(1 "Originaldaten") 
				label(2 "Imputation 1") 
				label(3 "Imputation 2")
				label(4 "Imputation 3") 
				label(5 "Imputation 4")
				label(6 "Imputation 5") 
				label(7 "Imputation 6")
				label(8 "Imputation 7") 
				label(9 "Imputation 8")
				label(10 "Imputation 9") 
				label(11 "Imputation 10"))
				
				;
#delimit cr		
graph export "output\fig_A2p.emf", replace	
graph export "output\fig_A2p.pdf", replace	

	#delimit ;
				kdensity v_125 if _mi_m == 0,  bwidth(1)
	addplot(	kdensity v_125 if _mi_m == 1 , bwidth(1) || 
				kdensity v_125 if _mi_m == 2 , bwidth(1)||
				kdensity v_125 if _mi_m == 3 , bwidth(1)||
				kdensity v_125 if _mi_m == 4 , bwidth(1)||
				kdensity v_125 if _mi_m == 5 , bwidth(1)||
				kdensity v_125 if _mi_m == 6 , bwidth(1)||
				kdensity v_125 if _mi_m == 7 , bwidth(1)||
				kdensity v_125 if _mi_m == 8 , bwidth(1)||
				kdensity v_125 if _mi_m == 9 , bwidth(1)||
				kdensity v_125 if _mi_m == 10, bwidth(1))
				legend(ring(0) pos(2) 
				label(1 "Originaldaten") 
				label(2 "Imputation 1") 
				label(3 "Imputation 2")
				label(4 "Imputation 3") 
				label(5 "Imputation 4")
				label(6 "Imputation 5") 
				label(7 "Imputation 6")
				label(8 "Imputation 7") 
				label(9 "Imputation 8")
				label(10 "Imputation 9") 
				label(11 "Imputation 10"));
#delimit cr	
graph export "output\fig_A2q.emf", replace
graph export "output\fig_A2q.pdf", replace

save "data\nach_mi.dta", replace


use "data\nach_mi.dta"


* AV für Regression --> Gendern dichotom
recode v_942 (0 = .) (1 = 1) (2 = 0), gen(genderstar)
label define genderstar 0 "Gen. Maskulinum" 1 "Genderstern"
label value genderstar genderstar 	
label variable genderstar "Genderstern gewählt"

* Altersgruppen
egen age_group = cut(v_125), at(12 , 31, 46, 61,  110)	 label 
table age_group
label define age_group 0 "14-30" 1 "31-45" 2 "46-60" 3 "60+", replace
label value age_group age_group


bysort v_370: tab v_19 age_group	

** Gewichtung nach Altersgruppe 18-30/31-55/>55, Geschlecht (m/w) und Bundesland
** Geschlecht = divers, Bundesland = Ausland und Alter < 18 bekommen Gewicht von 1
** Berechnung der Gewichte auf Basis der Destatis Genesis Online tabelle : 12421-0004 (Vorausberechneter Bevölkerungsstand: Bundesländer, Stichtag, Varianten der Bevölkerungsvorausberechnung, Geschlecht, Altersjahre für 31.12.2020)
** Berechnung über Excel-Datei "Gewichtungsberechnung_poststratifizierung.xlsx"

gen gewicht_1 = .
replace gewicht = 0.589408256473679 if v_19 ==1 & v_370 == 1 & age_group ==0
replace gewicht = 0.700931658908032 if v_19 ==2 & v_370 == 1 & age_group ==0
replace gewicht = 0.853881399614925 if v_19 ==3 & v_370 == 1 & age_group ==0
replace gewicht = 0.645209665787148 if v_19 ==4 & v_370 == 1 & age_group ==0
replace gewicht = 0.603516997470752 if v_19 ==5 & v_370 == 1 & age_group ==0
replace gewicht = 1.14253888108 if v_19 ==6 & v_370 == 1 & age_group ==0
replace gewicht = 0.948970157365368 if v_19 ==7 & v_370 == 1 & age_group ==0
replace gewicht = 0.77180539099625 if v_19 ==8 & v_370 == 1 & age_group ==0
replace gewicht = 0.792658033078074 if v_19 ==9 & v_370 == 1 & age_group ==0
replace gewicht = 0.749753808396357 if v_19 ==10 & v_370 == 1 & age_group ==0
replace gewicht = 0.989028875446966 if v_19 ==11 & v_370 == 1 & age_group ==0
replace gewicht = 0.734778863156187 if v_19 ==12 & v_370 == 1 & age_group ==0
replace gewicht = 0.637672781357533 if v_19 ==13 & v_370 == 1 & age_group ==0
replace gewicht = 0.87880428560514 if v_19 ==14 & v_370 == 1 & age_group ==0
replace gewicht = 0.669705609211321 if v_19 ==15 & v_370 == 1 & age_group ==0
replace gewicht = 0.415898675298784 if v_19 ==16 & v_370 == 1 & age_group ==0
replace gewicht = 0.728292743240065 if v_19 ==1 & v_370 == 1 & age_group ==1
replace gewicht = 0.826411121851895 if v_19 ==2 & v_370 == 1 & age_group ==1
replace gewicht = 0.860693349262317 if v_19 ==3 & v_370 == 1 & age_group ==1
replace gewicht = 1.46896437970433 if v_19 ==4 & v_370 == 1 & age_group ==1
replace gewicht = 0.224845792622794 if v_19 ==5 & v_370 == 1 & age_group ==1
replace gewicht = 1.00448993548776 if v_19 ==6 & v_370 == 1 & age_group ==1
replace gewicht = 1.07494211364412 if v_19 ==7 & v_370 == 1 & age_group ==1
replace gewicht = 0.676105748173641 if v_19 ==8 & v_370 == 1 & age_group ==1
replace gewicht = 0.764327686667487 if v_19 ==9 & v_370 == 1 & age_group ==1
replace gewicht = 0.869803242103774 if v_19 ==10 & v_370 == 1 & age_group ==1
replace gewicht = 0.944180923863403 if v_19 ==11 & v_370 == 1 & age_group ==1
replace gewicht = 0.602642898182493 if v_19 ==12 & v_370 == 1 & age_group ==1
replace gewicht = 1.29414348548937 if v_19 ==13 & v_370 == 1 & age_group ==1
replace gewicht = 1.24222400875516 if v_19 ==14 & v_370 == 1 & age_group ==1
replace gewicht = 0.66215456610075 if v_19 ==15 & v_370 == 1 & age_group ==1
replace gewicht = 0.587651425017169 if v_19 ==16 & v_370 == 1 & age_group ==1
replace gewicht = 0.68248777502627 if v_19 ==1 & v_370 == 1 & age_group ==2
replace gewicht = 1.40971763877767 if v_19 ==2 & v_370 == 1 & age_group ==2
replace gewicht = 0.802428528704572 if v_19 ==3 & v_370 == 1 & age_group ==2
replace gewicht = 0.984418018218775 if v_19 ==4 & v_370 == 1 & age_group ==2
replace gewicht = 0.158093025264879 if v_19 ==5 & v_370 == 1 & age_group ==2
replace gewicht = 1.62803944189508 if v_19 ==6 & v_370 == 1 & age_group ==2
replace gewicht = 1.45562818356604 if v_19 ==7 & v_370 == 1 & age_group ==2
replace gewicht = 1.57527967739515 if v_19 ==8 & v_370 == 1 & age_group ==2
replace gewicht = 0.928127594742633 if v_19 ==9 & v_370 == 1 & age_group ==2
replace gewicht = 0.968143486614704 if v_19 ==10 & v_370 == 1 & age_group ==2
replace gewicht = 0.96357391819753 if v_19 ==11 & v_370 == 1 & age_group ==2
replace gewicht = 0.904271122504715 if v_19 ==12 & v_370 == 1 & age_group ==2
replace gewicht = 1.60015011526733 if v_19 ==13 & v_370 == 1 & age_group ==2
replace gewicht = 1.93217867829306 if v_19 ==14 & v_370 == 1 & age_group ==2
replace gewicht = 0.925262731178907 if v_19 ==15 & v_370 == 1 & age_group ==2
replace gewicht = 0.790328363954943 if v_19 ==16 & v_370 == 1 & age_group ==2
replace gewicht = 0.604182921017772 if v_19 ==1 & v_370 == 1 & age_group ==3
replace gewicht = 1.80205834051821 if v_19 ==2 & v_370 == 1 & age_group ==3
replace gewicht = 1.56039369794319 if v_19 ==3 & v_370 == 1 & age_group ==3
replace gewicht = 1.90498568742978 if v_19 ==4 & v_370 == 1 & age_group ==3
replace gewicht = 0.118722231496574 if v_19 ==5 & v_370 == 1 & age_group ==3
replace gewicht = 1.64966225275277 if v_19 ==6 & v_370 == 1 & age_group ==3
replace gewicht = 2.33303866450143 if v_19 ==7 & v_370 == 1 & age_group ==3
replace gewicht = 1.74674302792196 if v_19 ==8 & v_370 == 1 & age_group ==3
replace gewicht = 1.06713662387724 if v_19 ==9 & v_370 == 1 & age_group ==3
replace gewicht = 1.37896870625957 if v_19 ==10 & v_370 == 1 & age_group ==3
replace gewicht = 1.30937866059651 if v_19 ==11 & v_370 == 1 & age_group ==3
replace gewicht = 1.90808121178374 if v_19 ==12 & v_370 == 1 & age_group ==3
replace gewicht = 3.20503871063193 if v_19 ==13 & v_370 == 1 & age_group ==3
replace gewicht = 4.21015600099493 if v_19 ==14 & v_370 == 1 & age_group ==3
replace gewicht = 1.49398193020156 if v_19 ==15 & v_370 == 1 & age_group ==3
replace gewicht = 1.1444268185657 if v_19 ==16 & v_370 == 1 & age_group ==3
replace gewicht = 0.816578739860023 if v_19 ==1 & v_370 == 2 & age_group ==0
replace gewicht = 0.967650719814873 if v_19 ==2 & v_370 == 2 & age_group ==0
replace gewicht = 1.18053625346601 if v_19 ==3 & v_370 == 2 & age_group ==0
replace gewicht = 0.799799294802008 if v_19 ==4 & v_370 == 2 & age_group ==0
replace gewicht = 0.534362001590765 if v_19 ==5 & v_370 == 2 & age_group ==0
replace gewicht = 1.89218053501888 if v_19 ==6 & v_370 == 2 & age_group ==0
replace gewicht = 1.25400199042112 if v_19 ==7 & v_370 == 2 & age_group ==0
replace gewicht = 1.2398707546538 if v_19 ==8 & v_370 == 2 & age_group ==0
replace gewicht = 1.11461042862161 if v_19 ==9 & v_370 == 2 & age_group ==0
replace gewicht = 1.11304737354052 if v_19 ==10 & v_370 == 2 & age_group ==0
replace gewicht = 1.1629428984725 if v_19 ==11 & v_370 == 2 & age_group ==0
replace gewicht = 0.811192036289451 if v_19 ==12 & v_370 == 2 & age_group ==0
replace gewicht = 0.828191529570346 if v_19 ==13 & v_370 == 2 & age_group ==0
replace gewicht = 1.45242002688016 if v_19 ==14 & v_370 == 2 & age_group ==0
replace gewicht = 1.00427749703459 if v_19 ==15 & v_370 == 2 & age_group ==0
replace gewicht = 0.535807124540771 if v_19 ==16 & v_370 == 2 & age_group ==0
replace gewicht = 0.918731313878101 if v_19 ==1 & v_370 == 2 & age_group ==1
replace gewicht = 1.27086752352014 if v_19 ==2 & v_370 == 2 & age_group ==1
replace gewicht = 1.46420436786905 if v_19 ==3 & v_370 == 2 & age_group ==1
replace gewicht = 2.00731896022668 if v_19 ==4 & v_370 == 2 & age_group ==1
replace gewicht = 0.233351381437314 if v_19 ==5 & v_370 == 2 & age_group ==1
replace gewicht = 1.85090449579344 if v_19 ==6 & v_370 == 2 & age_group ==1
replace gewicht = 1.48391743974379 if v_19 ==7 & v_370 == 2 & age_group ==1
replace gewicht = 1.04276309622165 if v_19 ==8 & v_370 == 2 & age_group ==1
replace gewicht = 1.18410146769748 if v_19 ==9 & v_370 == 2 & age_group ==1
replace gewicht = 1.28539396725516 if v_19 ==10 & v_370 == 2 & age_group ==1
replace gewicht = 1.73267572220774 if v_19 ==11 & v_370 == 2 & age_group ==1
replace gewicht = 1.13848548982013 if v_19 ==12 & v_370 == 2 & age_group ==1
replace gewicht = 0.918159796728207 if v_19 ==13 & v_370 == 2 & age_group ==1
replace gewicht = 1.71321367811555 if v_19 ==14 & v_370 == 2 & age_group ==1
replace gewicht = 1.26089993510037 if v_19 ==15 & v_370 == 2 & age_group ==1
replace gewicht = 0.955076199493924 if v_19 ==16 & v_370 == 2 & age_group ==1
replace gewicht = 0.904021054344345 if v_19 ==1 & v_370 == 2 & age_group ==2
replace gewicht = 1.56049237632735 if v_19 ==2 & v_370 == 2 & age_group ==2
replace gewicht = 0.973204759795287 if v_19 ==3 & v_370 == 2 & age_group ==2
replace gewicht = 2.35961695955764 if v_19 ==4 & v_370 == 2 & age_group ==2
replace gewicht = 0.12850953650619 if v_19 ==5 & v_370 == 2 & age_group ==2
replace gewicht = 2.03767788581288 if v_19 ==6 & v_370 == 2 & age_group ==2
replace gewicht = 2.05905329111926 if v_19 ==7 & v_370 == 2 & age_group ==2
replace gewicht = 1.87230688650292 if v_19 ==8 & v_370 == 2 & age_group ==2
replace gewicht = 1.40926365504073 if v_19 ==9 & v_370 == 2 & age_group ==2
replace gewicht = 1.33723778103473 if v_19 ==10 & v_370 == 2 & age_group ==2
replace gewicht = 1.56848098793223 if v_19 ==11 & v_370 == 2 & age_group ==2
replace gewicht = 1.03855840631753 if v_19 ==12 & v_370 == 2 & age_group ==2
replace gewicht = 1.97453180124885 if v_19 ==13 & v_370 == 2 & age_group ==2
replace gewicht = 6.14568772567949 if v_19 ==14 & v_370 == 2 & age_group ==2
replace gewicht = 0.99997966136392 if v_19 ==15 & v_370 == 2 & age_group ==2
replace gewicht = 1.38531992037517 if v_19 ==16 & v_370 == 2 & age_group ==2
replace gewicht = 1.69556795122746 if v_19 ==1 & v_370 == 2 & age_group ==3
replace gewicht = 4.19033730344289 if v_19 ==2 & v_370 == 2 & age_group ==3
replace gewicht = 2.99888163823458 if v_19 ==3 & v_370 == 2 & age_group ==3
replace gewicht = 5.48217363087119 if v_19 ==4 & v_370 == 2 & age_group ==3
replace gewicht = 0.164415864429008 if v_19 ==5 & v_370 == 2 & age_group ==3
replace gewicht = 4.72036508736052 if v_19 ==6 & v_370 == 2 & age_group ==3
replace gewicht = 6.96365766312406 if v_19 ==7 & v_370 == 2 & age_group ==3
replace gewicht = 4.20700973303219 if v_19 ==8 & v_370 == 2 & age_group ==3
replace gewicht = 2.99187250078589 if v_19 ==9 & v_370 == 2 & age_group ==3
replace gewicht = 3.43522846387956 if v_19 ==10 & v_370 == 2 & age_group ==3
replace gewicht = 3.36208339555593 if v_19 ==11 & v_370 == 2 & age_group ==3
replace gewicht = 6.69914663561004 if v_19 ==12 & v_370 == 2 & age_group ==3
replace gewicht = 6.94740912857677 if v_19 ==13 & v_370 == 2 & age_group ==3
replace gewicht = 12.1243683278358 if v_19 ==14 & v_370 == 2 & age_group ==3
replace gewicht = 2.22676499798342 if v_19 ==15 & v_370 == 2 & age_group ==3
replace gewicht = 6.00773738391339 if v_19 ==16 & v_370 == 2 & age_group ==3
replace gewicht_1 = 1 if v_370 == 3
replace gewicht_1 = 1 if v_19 == 0





* Gewicht_Raking
*** Calculate Raking Weights based on gender, agegroup, state and highest education

* divers werden beim raking zu den Frauen gezählt
gen male_2 = v_370
replace male_2 = 2 if v_370 == 3 
	
* Sonntagsfrage für raking recoden kleine Parteien+ weiß nicht+ Wahlzettel ungültig machen + würde nicht wählen + nicht wahlberechtigt in Kategorie "sonstige"
recode v_1143 (8/99 = 8)  , gen(zweitstimme)

gen bundesland = v_19
replace bundesland =. if v_19 == 0
tab bundesland

* Basisgewicht = 1  generieren
gen wt = 1

	* Vorgehen nach : https://www.stata-press.com/books/sw-preview.pdf ab S. 58
	* wichtig! nicht die exakten Populationsgrößen verwenden, sondern gerundet auf tausend (dabei auf gleiche Anzahl an totals achten!) Berechnung über Excel-File: "Gewichtungsberechnung_Raking.xlsx"
	* Mit zu großen Zahlen kommt svycal nicht zurecht

	 
	forvalues i = 1/10 {
	#delimit ;
	svycal rake  i.bundesland i.age_group  i.male_2 i.edu_3  [pw=wt] if _mi_m == `i', gen(gewicht_2_`i') ll(0.1) ul(10) tolerance(0.02) totals( _cons=65748
			1.bundesland  =  8384
			2.bundesland  =  10232
			3.bundesland  =  2636
			4.bundesland  =  2194
			5.bundesland  =  501
			6.bundesland  =  1375
			7.bundesland  =  4724
			8.bundesland  =  1409
			9.bundesland  =  6551
			10.bundesland  =  13985
			11.bundesland  =  3288
			12.bundesland  =  803
			13.bundesland  =  3492
			14.bundesland  =  1906
			15.bundesland  =  2427
			16.bundesland  =  1841
			1.male_2  =  31930
			2.male_2  =  33818
			0.age_group  =  13799
			1.age_group  =  12632
			2.age_group  =  16556
			3.age_group  =  22761
			1.edu_3  =  23092
			2.edu_3  =  20416
			3.edu_3  =  22239);
#delimit cr	
			}		

gen gewicht_2 = .
forvalues i = 1/10 {
replace gewicht_2 = gewicht_2_`i' if gewicht_2_`i' != .
}
drop gewicht_2_*			
			

	forvalues i = 1/10 {
	#delimit ;
	svycal rake  i.bundesland i.age_group  i.male_2 i.edu_3 i.zweitstimme [pw=wt] if _mi_m == `i', gen(gewicht_3_`i') ll(0.1) ul(10) tolerance(0.01) 
	totals( _cons=65748
			1.bundesland  =  8384
			2.bundesland  =  10232
			3.bundesland  =  2636
			4.bundesland  =  2194
			5.bundesland  =  501
			6.bundesland  =  1375
			7.bundesland  =  4724
			8.bundesland  =  1409
			9.bundesland  =  6551
			10.bundesland  =  13985
			11.bundesland  =  3288
			12.bundesland  =  803
			13.bundesland  =  3492
			14.bundesland  =  1906
			15.bundesland  =  2427
			16.bundesland  =  1841
			1.male_2  =  31930
			2.male_2  =  33818
			0.age_group  =  13799
			1.age_group  =  12632
			2.age_group  =  16556
			3.age_group  =  22761
			1.edu_3  =  23092
			2.edu_3  =  20416
			3.edu_3  =  22239
			1.zweitstimme  =  15852
			2.zweitstimme  =  16954
			3.zweitstimme  =  9716
			4.zweitstimme  =  7543
			5.zweitstimme  =  3221
			6.zweitstimme  =  6813
			7.zweitstimme  =  3409
			8.zweitstimme  =  5649)	;
#delimit cr	
}

gen gewicht_3 = .
forvalues i = 1/10 {
replace gewicht_3 = gewicht_3_`i' if gewicht_3_`i' != .
}
drop gewicht_3_*

	forvalues i = 1/10 {
	#delimit ;
	svycal rake  i.bundesland i.age_group  i.male_2 i.zweitstimme [pw=wt] if _mi_m == `i', gen(gewicht_4_`i') ll(0.1) ul(10) tolerance(0.01) 
	totals( _cons=65748
			1.bundesland  =  8384
			2.bundesland  =  10232
			3.bundesland  =  2636
			4.bundesland  =  2194
			5.bundesland  =  501
			6.bundesland  =  1375
			7.bundesland  =  4724
			8.bundesland  =  1409
			9.bundesland  =  6551
			10.bundesland  =  13985
			11.bundesland  =  3288
			12.bundesland  =  803
			13.bundesland  =  3492
			14.bundesland  =  1906
			15.bundesland  =  2427
			16.bundesland  =  1841
			1.male_2  =  31930
			2.male_2  =  33818
			0.age_group  =  13799
			1.age_group  =  12632
			2.age_group  =  16556
			3.age_group  =  22761
			1.zweitstimme  =  15852
			2.zweitstimme  =  16954
			3.zweitstimme  =  9716
			4.zweitstimme  =  7543
			5.zweitstimme  =  3221
			6.zweitstimme  =  6813
			7.zweitstimme  =  3409
			8.zweitstimme  =  5649)	;
#delimit cr	
}

gen gewicht_4 = .
forvalues i = 1/10 {
replace gewicht_4 = gewicht_4_`i' if gewicht_4_`i' != .
}
drop gewicht_4_*

label variable gewicht_1 "Poststratifizierung nach Alter, Geschlecht und Bundesland"
label variable gewicht_2 "Raking mit Bundesland, Altersgruppe, Geschlecht und Bildungsgrad"
label variable gewicht_3 "Raking mit Bundesland, Altersgruppe, Geschlecht, Bildungsgrad und Zweitstimme"
label variable gewicht_4 "Raking mit Bundesland, Altersgruppe, Geschlecht und Zweitstimme"

forvalues i = 1/4 {
hist gewicht_`i'
graph save "dump\fig_A4_`i'", replace
}
graph combine "dump\fig_A4_1.gph" "dump\fig_A4_2.gph" "dump\fig_A4_3.gph" "dump\fig_A4_4.gph" , row(4) xsize(6) ysize(9)
graph save "output\fig_A4", replace
graph export "output\fig_A4.pdf", replace
graph export "output\fig_A4.emf", replace

* Gewicht_1 mit Poststratifizierung nach Alter, Geschlecht und Bundesland zeigt bei der Verteilung der Gewichte das sinnvollste Bild --> Verwendung von Gewicht_1 im Folgenden

* Fig 1. Gendern by sex
graph bar (percent)  v_370 [aweight = gewicht_1] if _mi_m != 0, over(v_942, lab(angle(45))) by(v_370, cols(3) note("")) ytitle("") note("")
graph save "output\fig_02a", replace
graph export "output\fig_02a.pdf", replace
graph export "output\fig_02a.emf", replace


* Fig 2. Gendern by age_group
graph bar (percent)  age_group [aweight = gewicht_1] if _mi_m != 0, over(v_942, lab(angle(45))) by(age_group, cols(4) note("")) ytitle("") note("")
graph save "output\fig_02b", replace
graph export "output\fig_02b.pdf", replace
graph export "output\fig_02b.emf", replace

graph combine "output\fig_02a" "output\fig_02b", ycommon col(1)
graph save "output\fig_02", replace
graph export "output\fig_02.pdf", replace
graph export "output\fig_02.emf", replace

estpost tab bundesland v_942 [aweight = gewicht_1] if _mi_m != 0
mat insgesamt_w1 = e(rowpct)'	
svmat insgesamt_w1	
rename insgesamt_w11 insgesamt_bl

estpost tab bundesland v_942 [aweight = gewicht_1] if v_936 < 3 &  _mi_m != 0
mat insgesamt_w2 = e(rowpct)'	
svmat insgesamt_w2	
rename insgesamt_w21 kleinstadt_bl

estpost tab bundesland v_942 [aweight = gewicht_1] if v_936 > 2 &  _mi_m != 0
mat insgesamt_w3 = e(rowpct)'	
svmat insgesamt_w3	
rename insgesamt_w31 grossstadt_bl

gen bundesland_fig3 = .
label value bundesland_fig3 v_19
replace bundesland_fig3 = 1 in 18
replace bundesland_fig3 = 2 in 19
replace bundesland_fig3 = 3 in 20
replace bundesland_fig3 = 4 in 21
replace bundesland_fig3 = 5 in 22
replace bundesland_fig3 = 6 in 23
replace bundesland_fig3 = 7 in 24
replace bundesland_fig3 = 8 in 25
replace bundesland_fig3 = 9 in 26
replace bundesland_fig3 = 10 in 27
replace bundesland_fig3 = 11 in 28
replace bundesland_fig3 = 12 in 29
replace bundesland_fig3 = 13 in 30
replace bundesland_fig3 = 14 in 31
replace bundesland_fig3 = 15 in 32
replace bundesland_fig3 = 16 in 33

replace insgesamt_bl = . if bundesland_fig3 == .
replace kleinstadt_bl = . if bundesland_fig3 == .
replace grossstadt_bl = . if bundesland_fig3 == .

** rowpercentages für Wohnort < 20.000 bei den Stadtstaaten droppen
replace kleinstadt_bl = . if bundesland_fig3 == 5
replace kleinstadt_bl = . if bundesland_fig3 == 6
replace kleinstadt_bl = . if bundesland_fig3 == 3
replace grossstadt_bl = . if bundesland_fig3 == 5
replace grossstadt_bl = . if bundesland_fig3 == 6
replace grossstadt_bl = . if bundesland_fig3 == 3

label variable insgesamt_bl "Insgesamt"
label variable kleinstadt_bl "Wohnort < 20.000"
label variable grossstadt_bl "Wohnort > 20.000"

* Gendern by Bundesland und Größe des Wohnorts
graph bar (asis) insgesamt_bl kleinstadt_bl grossstadt_bl, over(bundesland_fig3, sort(insgesamt_bl) label(angle(45))) legend(pos(6) col(3))
graph save "output\fig_A3", replace
graph export "output\fig_A3.pdf", replace
graph export "output\fig_A3.emf", replace

* Gendern by Sonntagsfrage
graph bar (percent)  sonntagsfrage [aweight = gewicht_1], over(v_942, lab(angle(45))) by(sonntagsfrage, cols(7) note("")) ytitle("") note("")
graph save "output\fig_03", replace
graph export "output\fig_03.pdf", replace
graph export "output\fig_03.emf", replace



* Index der Einstellung zu staatlichen Eingriffen
pwcorr v_808 v_806 v_816 v_1059 v_1061 v_1088 v_1090, obs sig



* check which variables have to be reversed
alpha   v_816 v_1059 v_806 v_808 v_1061 v_1088_recode v_1090_recode v_811, item  

* reverse
gen v_806_rev = 4- v_806
gen v_808_rev = 4- v_808
gen v_1088_rec_rev = 4- v_1088_rec
gen v_1090_rec_rev = 4- v_1090_rec
gen v_811_rev = 4- v_811

* generate Index für jede Imputation einzeln
forvalues i = 0/10 {
alpha   v_816 v_1059 v_806_rev v_808_rev v_1061 v_1088_rec_rev v_1090_rec_rev v_811_rev if _mi_m == `i', item  gen (index_staatl_eingriff_`i')
}

gen index_staatl_eingriff = .
forvalues i = 0/10 {
replace index_staatl_eingriff = index_staatl_eingriff_`i' if index_staatl_eingriff_`i' != .
}
drop index_staatl_eingriff_*

* v_773 v_774 und index_staatl_eingriff auf Skala 0-10 bringen
gen st_v_773 = v_773 - 1
gen st_v_774 = v_774 - 1
gen st_index_staatl_eingriff = (index_staatl_eingriff - 1)*10/2 
label variable st_v_773 "Links = 0; rechts = 10"
label variable st_v_774 "GAL = 0, TAN = 10"
label variable st_index_staatl_eingriff "Zustimmung zu staatlicher Regulierung (0-10)"  

label define sonntagsfrage_neu 1 "CDU" 2 "SPD" 3 "Grüne" 4 "FDP" 5 "Linke" 6 "AfD" 7 "CSU" 8 "Freie Wähler" 9 "dieBasis" 10 "die Partei" 11 "VOLT" 12 "Sonstige" 13 "nicht wählen oder ungültig" 14 "nicht wahlberechtigt" , replace	
label values sonntagsfrage sonntagsfrage_neu
label variable sonntagsfrage "Sonntagsfrage"	
	
gen alter_10 = v_125/10
label variable alter_10 "Alter (in Dekaden)"
	
recode v_19 (1 2 7 9 10 11 12 15 = 1) (4 8 13 14 16 = 2) (3 5 6 = 3), gen(west_ost_stadtstaat)
label define west_ost_stadtstaat 1 "Westdeutsches Flächenland" 2 "Ostdeutsches Flächenland" 3 "Stadtstaat"
label value west_ost_stadtstaat west_ost_stadtstaat

set matsize 10000
* Überblickstabelle A2
	tab v_942 if _mi_m != 0 [aweight = gewicht_1]
	tab genderstar if _mi_m != 0 [aweight = gewicht_1]
	tab sonntagsfrage if _mi_m != 0 [aweight = gewicht_1]
	sum st_v_773
	sum st_v_774 
	sum index_staatl_eingriff
	tab west_ost_stadtstaat if _mi_m != 0 [aweight = gewicht_1]
	tab v_936 if _mi_m != 0 [aweight = gewicht_1]
	tab v_370 if _mi_m != 0 [aweight = gewicht_1]
	sum alter_10
	tab edu_3 if _mi_m != 0 [aweight = gewicht_1]
	tab v_1131 if _mi_m != 0 [aweight = gewicht_1]

	tab v_19 if _mi_m != 0 [aweight = gewicht_1]


*** Regression
mi svyset [pweight=gewicht_1]

	* Model 1 - Sonntagsfrage
	
		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_1=0
		qui mi xeq 1/10: logistic genderstar i.sonntagsfrage alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_1=r2_1+e(r2_p)
		scalar r2_1=r2_1/10
		noi di "Pseudo R=squared over imputed data = " r2_1	
	
	mi estimate, post: logit genderstar i.sonntagsfrage alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
	estadd scalar r2 = r2_1
	eststo m1
	
		* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle (benötigt zur Berechnung der Pseudo-R2-Werte: --> Mittelwerte über alle Pseudo-R2-Werte der Einzelimputationen)
		forvalues i = 1/10 {
		logit genderstar i.sonntagsfrage alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
		eststo fit_`i'
		estadd fitstat
		}
		esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_M1.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
	
	
	* Model 2 - politische Einstellung
	
		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_2=0
		qui mi xeq 1/10: logistic genderstar st_v_773 st_v_774 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_2=r2_2+e(r2_p)
		scalar r2_2=r2_2/10
		noi di "Pseudo R=squared over imputed data = " r2_2	
	
		mi estimate, post: logit genderstar st_v_773 st_v_774 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
		estadd scalar r2 = r2_2
		eststo m2
		
		* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle (benötigt zur Berechnung der Pseudo-R2-Werte: --> Mittelwerte über alle Pseudo-R2-Werte der Einzelimputationen)
		forvalues i = 1/10 {
		logit genderstar st_v_773 st_v_774 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
		eststo fit_`i'
		estadd fitstat
		}
		esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_M2.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
	
	* Model 3 - Index der Zustimmung zu staatlichen Eingriffen

		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_3=0
		qui mi xeq 1/10: logistic genderstar st_index_staatl_eingriff alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_3=r2_3+e(r2_p)
		scalar r2_3=r2_3/10
		noi di "Pseudo R=squared over imputed data = " r2_3	
		
		mi estimate, post: logit genderstar st_index_staatl_eingriff alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)	
		estadd scalar r2 = r2_3
		eststo m3
		
		* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle (benötigt zur Berechnung der Pseudo-R2-Werte: --> Mittelwerte über alle Pseudo-R2-Werte der Einzelimputationen)
		forvalues i = 1/10 {
		logit genderstar st_index_staatl_eingriff alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
		eststo fit_`i'
		estadd fitstat
		}
		esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_M3.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
	
	* Model 4 - West-Ost_Stadtstaat
	
		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_4=0
		qui mi xeq 1/10: logistic genderstar i.west_ost_stadtstaat alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_4=r2_4+e(r2_p)	
		scalar r2_4=r2_4/10
		noi di "Pseudo R=squared over imputed data = " r2_4
	
		mi estimate, post: logit genderstar i.west_ost_stadtstaat alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)	
		estadd scalar r2 = r2_4
		eststo m4
		
		* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle (benötigt zur Berechnung der Pseudo-R2-Werte: --> Mittelwerte über alle Pseudo-R2-Werte der Einzelimputationen)
		forvalues i = 1/10 {
		logit genderstar i.west_ost_stadtstaat alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
		eststo fit_`i'
		estadd fitstat
		}
		esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_M4.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
		
			* Model 4b - Bundesland
		
			*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
			scalar r2b_4=0
			qui mi xeq 1/10: logistic genderstar i.v_19 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2b_4=r2b_4+e(r2_p)	
			scalar r2b_4=r2b_4/10
			noi di "Pseudo R=squared over imputed data = " r2b_4
		
			mi estimate, post: logit genderstar i.v_19 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)	
			estadd scalar r2b = r2b_4
			eststo m4b
			
			#delimit ;
			esttab m4b  using "dump/table_A3.rtf", se stats(r2b) replace label 
			order(	1.sonntagsfrage 
					2.sonntagsfrage 
					3.sonntagsfrage 
					4.sonntagsfrage 
					5.sonntagsfrage 
					6.sonntagsfrage 
					7.sonntagsfrage 
					8.sonntagsfrage 
					9.sonntagsfrage 
					10.sonntagsfrage 
					11.sonntagsfrage 
					12.sonntagsfrage 
					13.sonntagsfrage 
					14.sonntagsfrage
					st_v_773
					st_v_774
					st_index_staatl_eingriff
					1.west_ost_stadtstaat
					2.west_ost_stadtstaat
					3.west_ost_stadtstaat
					1.v_936
					2.v_936
					3.v_936
					4.v_936);
				#delimit cr
		* Convert encoding, so dass Umlaute korrekt dargestellt werden
		unicode convertfile "dump/table_A3.rtf" "output/table_A3.rtf", dstencoding(ISO-8859-1) replace
	
	
	* Model 5 - Größe Wohnort

		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_5=0
		qui mi xeq 1/10: logistic genderstar i.v_936 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_5=r2_5+e(r2_p)
		scalar r2_5=r2_5/10
		noi di "Pseudo R=squared over imputed data = " r2_5
	
		mi estimate, post: logit genderstar i.v_936 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
		estadd scalar r2 = r2_5
		eststo m5
		
		* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle (benötigt zur Berechnung der Pseudo-R2-Werte: --> Mittelwerte über alle Pseudo-R2-Werte der Einzelimputationen)
		forvalues i = 1/10 {
		logit  genderstar i.v_936 alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
		eststo fit_`i'
		estadd fitstat
		}
		esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_M5.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
		
	* Model 6 - complete model
			
		*Berechnung von Pseudo-R2 (C-Statistic (d.h. Area under the ROC-Corve) geht bei Verwendung von pweight nicht)
		scalar r2_6=0
		qui mi xeq 1/10: logistic genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19); scalar r2_6=r2_6+e(r2_p)
		scalar r2_6=r2_6/10
		noi di "Pseudo R=squared over imputed data = " r2_6
	
		mi estimate, post: logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
		estadd scalar r2 = r2_6	
		eststo m6
	
		coefplot, drop(_cons) xline(1) eform  ///
			msymbol(d) mcolor(white) levels(99 95 90) ciopts(lwidth(1.5 1.5 1.5) lcolor(*.33 *.66 *1)) ///
			headings(	2.sonntagsfrage = "{it:     Sonntagsfrage} (Referenz: CDU)" ///
						2.west_ost_stadtstaat = "{it:      Wohnort wo?} (Referenz: Westdt. Flächenland)" ///
						2.v_936 = "{it:     Wohnort Größe} (Referenz: < 5.000)" ///
						2.v_370 = "{it:       Geschlecht} (Referenz: männlich)" ///
						1.edu_3 = "{it:      Bildungsstand} (Referenz: mittel)" ///
						2.v_1131 = "{it: Haushaltseinkommen?} (Referenz: sehr bequem leben)" ///
						, wrap(31)) ///
			coeflabels(	st_v_773 = "links = 0; rechts = 10"  ///
								st_v_774 = "GAL = 0; TAN = 10"		///
								st_index_staatl_eingriff = "Zustimmung zu staatlichen Eingriffen 0-10"	)					///
			legend(subtitle("Konfidenzintervall") order(1 "99%" 2 "95%" 3 "90%" ) position(6) rows(1) )  ///
			ysize(10) xsize(8) scale(0.5)
		graph save "output\fig_04", replace
		graph export "output\fig_04.emf", replace
		graph export "output\fig_04.pdf", replace
		
		* Berrechnung der Odds-Ratios (mit Option eform werden die Odds-Ratios unter b gespeichert)
		mi estimate, post eform: logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19) or
		matrix odds_r = r(table)
		* nur Zeile mit den b herausgreifen
		matrix odds_r = odds_r[1,1...]
		* Matrix transponieren
		matrix odds_r = odds_r'
		* Berechnung des Kehrwerts in mata
		mata: st_matrix("odds_r_rev", 1 :/ st_matrix("odds_r"))
		matrix list odds_r_rev
		* Beide Matricen kombinieren
		matrix odds_r_final = odds_r, odds_r_rev
		matrix list odds_r_final
		* mit esttab ausgeben lassen
		esttab matrix(odds_r_final, fmt(3 3)) using "dump/table_A8.rtf", replace label
		* Convert encoding, so dass Umlaute korrekt dargestellt werden
		unicode convertfile "dump/table_A8.rtf" "output/table_A8.rtf", dstencoding(ISO-8859-1) replace
		
	* Test auf Multikollinearität nach https://ideas.repec.org/c/boc/bocode/s457254.html auf Basis der entsprechenden OLS-Regression		
		quietly mi estimate: reg genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
		mivif
		matrix VIF = r(mivif)
		esttab matrix(VIF, fmt(2 2)) using "dump/table_A6.rtf", replace label
		* Convert encoding, so dass Umlaute korrekt dargestellt werden
		unicode convertfile "dump/table_A6.rtf" "output/table_A6.rtf", dstencoding(ISO-8859-1) replace
	
	* Linktest für jede der 10 Imputationen einzelne Logit-Modelle --> Tabelle A7
	forvalues i = 1/10 {
	logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
	linktest
	}
	
	* Hosmer & Lemshow Goodness of Fit Test für jede der 10 Imputationen einzelne Logit-Modelle (predicted frequencies sollten mit observed frequencies übereinstimmen)
	* Schätzung mit iweights, da Option gof mit pweights nicht erlaubt ist. Das Ergebnis der Regressionsschätzung mit pweights und iweights ist 100% identisch
	* --> Tabelle A5
	forvalues i = 1/10 {
	logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [iweight = gewicht_1] if _mi_m == `i', cluster(v_19)
	estat gof, group(10) table
	}
	
	* ROC curve für jede der 10 Imputationen einzelne Logit-Modelle (predicted frequencies sollten mit observed frequencies übereinstimmen)
	forvalues i = 1/10 {
	logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [iweight = gewicht_1] if _mi_m == `i', cluster(v_19)
	lroc, title("Imputation `i'")
	graph save "dump/roc_`i'", replace
	}
	
	graph combine  "dump/roc_1.gph" "dump/roc_2.gph" "dump/roc_3.gph" "dump/roc_4.gph" "dump/roc_5.gph" "dump/roc_6.gph" "dump/roc_7.gph" "dump/roc_8.gph" "dump/roc_9.gph" "dump/roc_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A5.emf", replace
	graph export "output\fig_A5.pdf", replace
	
	* vergleich Probit
	* ROC curve für jede der 10 Imputationen einzelne Logit-Modelle (predicted frequencies sollten mit observed frequencies übereinstimmen)
	forvalues i = 1/10 {
	probit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [iweight = gewicht_1] if _mi_m == `i', cluster(v_19)
	lroc, title("Imputation `i'")
	graph save "dump/roc2_`i'", replace
	}
	
	graph combine  "dump/roc_1.gph" "dump/roc2_2.gph" "dump/roc2_3.gph" "dump/roc2_4.gph" "dump/roc2_5.gph" "dump/roc2_6.gph" "dump/roc2_7.gph" "dump/roc2_8.gph" "dump/roc2_9.gph" "dump/roc2_10.gph" , col(3) xsize(5) ysize(7)
	graph export "output\fig_A6.emf", replace
	graph export "output\fig_A6.pdf", replace
	
	#delimit ;
	esttab m1 m2 m3 m4 m5 m6 using "dump/table_2_1.rtf", se stats(r2) replace label 
		order(	1.sonntagsfrage 
				2.sonntagsfrage 
				3.sonntagsfrage 
				4.sonntagsfrage 
				5.sonntagsfrage 
				6.sonntagsfrage 
				7.sonntagsfrage 
				8.sonntagsfrage 
				9.sonntagsfrage 
				10.sonntagsfrage 
				11.sonntagsfrage 
				12.sonntagsfrage 
				13.sonntagsfrage 
				14.sonntagsfrage
				st_v_773
				st_v_774
				st_index_staatl_eingriff
				1.west_ost_stadtstaat
				2.west_ost_stadtstaat
				3.west_ost_stadtstaat
				1.v_936
				2.v_936
				3.v_936
				4.v_936);
			#delimit cr
	
	* Convert encoding, so dass Umlaute korrekt dargestellt werden
	unicode convertfile "dump/table_2_1.rtf" "output/table_2.rtf", dstencoding(ISO-8859-1) replace
	
	* Überprüfung einflussreicher Fälle mit Gewicht nicht möglich!
// 	mi estimate, post: logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
// 	mi predictnl predicted_probability = normal(xb()) using miest
// 	mi xeq 0: gen residual = genderstar - predicted_probability // USE YOUR ACTUAL OUTCOME VARIABLE
// 	mi xeq 0: graph twoway scatter residual st_index
//	
// 	forvalues i = 1/10 {
// 	logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [iweight = gewicht_1] if _mi_m == `i', cluster(v_19) 
// 	*predict pears_`i', p
// 	predict hat_`i', hat
// 	scatter hat_`i' _mi_id, mlab(_mi_id)
// 	graph save "dump/hat_`i'.gph", replace
// 	}
// 	graph combine "dump/hat_1.gph" "dump/hat_2.gph" "dump/hat_3.gph" "dump/hat_4.gph" "dump/hat_5.gph" "dump/hat_6.gph" "dump/hat_7.gph" "dump/hat_8.gph" "dump/hat_9.gph" "dump/hat_10.gph" , col(3) xsize(5) ysize(7)
// 	graph export "output\hat.emf", replace
// 	graph export "output\hat.pdf", replace
	
	* Fitstat für jede der 10 Imputationen einzelne Logit-Modelle
	forvalues i = 1/10 {
	logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1] if _mi_m == `i', cluster(v_19)
	eststo fit_`i'
	estadd fitstat
	}
	
	#delimit ;
	esttab fit_1 fit_2 fit_3 fit_4 fit_5 fit_6 fit_7 fit_8 fit_9 fit_10 using "dump/table_A4.rtf", scalars(r2_mf r2_mfadj r2_mz) replace label 
	order(	1.sonntagsfrage 
				2.sonntagsfrage 
				3.sonntagsfrage 
				4.sonntagsfrage 
				5.sonntagsfrage 
				6.sonntagsfrage 
				7.sonntagsfrage 
				8.sonntagsfrage 
				9.sonntagsfrage 
				10.sonntagsfrage 
				11.sonntagsfrage 
				12.sonntagsfrage 
				13.sonntagsfrage 
				14.sonntagsfrage
				st_v_773
				st_v_774
				st_index_staatl_eingriff
				1.west_ost_stadtstaat
				2.west_ost_stadtstaat
				3.west_ost_stadtstaat
				1.v_936
				2.v_936
				3.v_936
				4.v_936);
			#delimit cr
	* Convert encoding, so dass Umlaute korrekt dargestellt werden
	unicode convertfile "dump/table_A4.rtf" "output/table_A4.rtf", dstencoding(ISO-8859-1) replace		

	
* Marginsplots für M6
	
			* Zustimmung staatliche Eingriffe (links/rechts & GAL/TAN) - Männer vs Frauen
			mi estimate: logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
			mimrgns , at(st_index_staatl_eingriff = (0(1)10) st_v_773 = (0 10) st_v_774 = (0 10) v_370 = (1 2) )  predict(pr) cmdmargins 
			*title(Vorhergesagte Wahrscheinlichkeit die Variante mit Genderstern zu wählen (+95% CI))
			marginsplot
			#delimit ;	
						marginsplot, 
						title("")
						recast(line) 
						plot1opts(lcolor(blue) lpattern(line)) 
						plot7opts(lcolor(blue) lpattern(dash)) 
						plot2opts(lcolor(red) lpattern(line)) 
						plot8opts(lcolor(red) lpattern(dash)) 
						plot3opts(lpattern(blank))
						plot4opts(lpattern(blank))
						plot5opts(lpattern(blank))
						plot6opts(lpattern(blank))
						recastci(rarea) 
						ci1opt(color(blue%20))
						ci7opt(color(blue%20))
						ci2opt(color(red%20))
						ci8opt(color(red%20))
						ci3opt(color(red%0))
						ci4opt(color(red%0))
						ci5opt(color(red%0))
						ci6opt(color(red%0))
						ytitle("Wahrscheinlichkeit Gendersternvariante zu wählen in %") 
						ylabel(0.2 "20" 0.4 "40" 0.6 "60" 0.8 "80")
						legend( rows(2) position (6) 
						order(	9 "Mann: links & ökologisch/alternativ" 
								10 "Frau: links & ökologisch/alternativ" 
								15 "Mann: rechts & traditionell/konservativ" 
								16 "Frau: rechts & traditionell/konservativ" ));
				#delimit cr
				graph save "output/fig_05", replace
				graph export "output/fig_05.emf", replace
				graph export "output/fig_05.pdf", replace
			

			
			*Alter (Bildung & Haushaltseinkommen) - Männer vs Frauen
			mimrgns , at(alter_10 = (1(1)10) v_1131 = (1 5) edu_3 = (2 3) v_370 = (1 2))  predict(pr) cmdmargins 
			*title(Vorhergesagte Wahrscheinlichkeit die Variante mit Genderstern zu wählen (+95% CI))
					#delimit ;	
						marginsplot, 
						title("")
						recast(line) 
						plot3opts(lcolor(blue) lpattern(line)) 
						plot5opts(lcolor(blue) lpattern(dash)) 
						plot4opts(lcolor(red) lpattern(line)) 
						plot6opts(lcolor(red) lpattern(dash)) 
						plot1opts(lpattern(blank))
						plot2opts(lpattern(blank))
						plot7opts(lpattern(blank))
						plot8opts(lpattern(blank))
						recastci(rarea) 
						ci3opt(color(blue%20))
						ci5opt(color(blue%20))
						ci4opt(color(red%20))
						ci6opt(color(red%20))
						ci1opt(color(red%0))
						ci2opt(color(red%0))
						ci7opt(color(red%0))
						ci8opt(color(red%0))
						ytitle("Wahrscheinlichkeit Gendersternvariante zu wählen in %") 
						ylabel(0.1 "10" 0.2 "20" 0.3 "30" 0.4 "40" 0.5 "50")
						xlabel(1 "10" 2 "20" 3 "30" 4 "40" 5 "50" 6 "60" 7 "70" 8 "80" 9 "90" 10 "100")
						xtitle ("Alter in Jahren")
						legend( rows(2) position (6) 
						order(	11 "Mann: sehr bequem leben & hohe Bildung" 
								12 "Frau: sehr bequem leben & hohe Bildung" 
								13 "Mann: eigentlich gar nicht zurechtkommen" "& mittlere Bildung" 
								14 "Frau: eigentlich gar nicht zurechtkommen" "& mittlere Bildung" ));
				#delimit cr
				graph save "output/fig_06", replace
				graph export "output/fig_06.emf", replace
				graph export "output/fig_06.pdf", replace
			
		
* Zustimmung staatliche Eingriffe (links/rechts & GAL/TAN) - Männer vs Frauen vs divers
			mi estimate: logit genderstar i.sonntagsfrage st_v_773 st_v_774 st_index_staatl_eingriff i.west_ost_stadtstaat i.v_936  alter_10 i.v_370 ib2.edu_3 i.v_1131 [pweight = gewicht_1], cluster(v_19)
			mimrgns , at(st_index_staatl_eingriff = (0(1)10) st_v_773 = (0 10) st_v_774 = (0 10) v_370 = (1 2 3) )  predict(pr) cmdmargins 
			*title(Vorhergesagte Wahrscheinlichkeit die Variante mit Genderstern zu wählen (+95% CI))
			marginsplot
			#delimit ;	
						marginsplot, 
						title("")
						recast(line) 
						plot1opts(lcolor(blue) lpattern(line)) 
						plot10opts(lcolor(blue) lpattern(dash)) 
						plot2opts(lcolor(red) lpattern(line)) 
						plot11opts(lcolor(red) lpattern(dash))
						plot3opts(lcolor(green) lpattern(line))
						plot12opts(lcolor(green) lpattern(dash))
						plot4opts(lpattern(blank))
						plot5opts(lpattern(blank))
						plot6opts(lpattern(blank))
						plot7opts(lpattern(blank))
						plot8opts(lpattern(blank))
						plot9opts(lpattern(blank))
						recastci(rarea) 
						ci1opt(color(blue%20))
						ci10opt(color(blue%20))
						ci2opt(color(red%20))
						ci11opt(color(red%20))
						ci3opt(color(green%20))
						ci12opt(color(green%20))
						ci4opt(color(red%0))
						ci5opt(color(red%0))
						ci6opt(color(red%0))
						ci7opt(color(red%0))
						ci8opt(color(red%0))
						ci9opt(color(red%0))
						ytitle("Pr(Genderstern)") 
						legend( rows(3) position (6) 
						order(	
						14 "Frau: links & ökologisch/alternativ" 
						23 "Frau: rechts & traditionell/konservativ" 
						13 "Mann: links & ökologisch/alternativ" 
						22 "Mann: rechts & traditionell/konservativ" 		
						15 "divers: links & ökologisch/alternativ"
						24 "divers: rechts & traditionell/konservativ"));
				#delimit cr
				graph save "output/fig_A7", replace
				graph export "output/fig_A7.emf", replace
				graph export "output/fig_A7.pdf", replace

				
		*Alter (Bildung & Haushaltseinkommen) - Männer vs Frauen vs divers
			mimrgns , at(alter_10 = (1(1)10) v_1131 = (1 5) edu_3 = (2 3) v_370 = (1 2 3))  predict(pr) cmdmargins 
			*title(Vorhergesagte Wahrscheinlichkeit die Variante mit Genderstern zu wählen (+95% CI))
					#delimit ;	
						marginsplot, 
						title("")
						recast(line) 
						plot4opts(lcolor(blue) lpattern(line)) 
						plot7opts(lcolor(blue) lpattern(dash)) 
						plot5opts(lcolor(red) lpattern(line)) 
						plot8opts(lcolor(red) lpattern(dash)) 
						plot6opts(lcolor(green) lpattern(line)) 
						plot9opts(lcolor(green) lpattern(line)) 
						plot1opts(lpattern(blank))
						plot2opts(lpattern(blank))
						plot3opts(lpattern(blank))
						plot10opts(lpattern(blank))
						plot11opts(lpattern(blank))
						plot12opts(lpattern(blank))
						recastci(rarea) 
						ci4opt(color(blue%20))
						ci7opt(color(blue%20))
						ci5opt(color(red%20))
						ci8opt(color(red%20))
						ci6opt(color(green%20))
						ci9opt(color(green%20))
						ci1opt(color(red%0))
						ci2opt(color(red%0))
						ci3opt(color(red%0))
						ci10opt(color(red%0))
						ci11opt(color(red%0))
						ci12opt(color(red%0))
						ytitle("Pr(Genderstern)") 
						xlabel(1 "10" 2 "20" 3 "30" 4 "40" 5 "50" 6 "60" 7 "70" 8 "80" 9 "90" 10 "100")
						xtitle("Alter in Jahren")
						legend( rows(3) position (6) 
						order(	17 "Frau: sehr bequem leben & hohe Bildung" 
								20 "Frau: eigentlich gar nicht zurechtkommen" "& mittlere Bildung"
								16 "Mann: sehr bequem leben & hohe Bildung" 
								19 "Mann: eigentlich gar nicht zurechtkommen" "& mittlere Bildung" 
								18 "divers: sehr bequem leben & hohe Bildung" 
								21 "divers: eigentlich gar nicht zurechtkommen" "& mittlere Bildung" 
							 ));
				#delimit cr
				graph save "output/fig_A8", replace
				graph export "output/fig_A8.emf", replace
				graph export "output/fig_A8.pdf", replace			
				
				
				
**** Vergleich mit Experteneinschätzuungen zur Position der Parteien zum Thema inklusiver Sprache aus dem Open Expert Survey
* data from: Jankowski, Michael; Stecker, Christian; Blätte, Andreas; Bräuninger, Thomas; Debus, Marc; Kurella, Anna-Sophie; Müller, Jochen; Pickel, Susanne, 2021,
* "Open Expert Survey 2021", https://doi.org/10.7910/DVN/XIL6OW, Harvard Dataverse, V1, UNF:6:6sxzoJDUI7ZlmfiRfZ2i1w== [fileUNF] 
* Der hier verwendete Datensatz "OES_inklusive_Sprache.dta" wurde auf die benötigten Variablen zur inklusiven Sprache reduziert

use "data\OES_inklusive_Sprache.dta", replace

* Label variables
label variable inklusivesprache_cdu "CDU"
label variable inklusivesprache_csu "CSU"
label variable inklusivesprache_spd "SPD"
label variable inklusivesprache_afd "AfD"
label variable inklusivesprache_fdp "FDP"
label variable inklusivesprache_linke "Linke"
label variable inklusivesprache_gruene "Grüne"
label variable inklusivesprache_fw "Freie Wähler"

#delimit ;
graph box inklusiv*, ytitle("Position zu inklusiver Sprache" "(1 = starke Ablehnung; 20 = starke Zustimmung)") 
legend(off)
yscale(range(1(1)20))
box(2, color(blue))
box(3, color(red))
box(4, color(lightblue))
box(5, color(gold))
box(6, color(purple))
box(7, color(green))
box(8, color(orange))
marker(2, mcolor(blue) msymbol(Sh))
marker(3, mcolor(red) msymbol(Sh))
marker(4, mcolor(lightblue) msymbol(Sh))
marker(5, mcolor(gold) msymbol(Sh))
marker(6, mcolor(purple) msymbol(Sh))
marker(7, mcolor(green) msymbol(Sh))
marker(8, mcolor(orange) msymbol(Sh))
text(7 6.5 "CDU")
text(5 19 "CSU")
text(13 31.5 "SPD")
text(0.4 44 "AfD")
text(9 56.5 "FDP")
text(18.5 68.8 "Linke")
text(19.5 81.3 "Grüne")
text(1.5 93.6 "FW")
text(-1.3 -6 "n = ...", size(small))
text(-1.3 6.4 "62", size(small))
text(-1.3 18.9 "62", size(small))
text(-1.3 31.4 "66", size(small))
text(-1.3 43.9 "65", size(small))
text(-1.3 56.4 "57", size(small))
text(-1.3 68.9 "63", size(small))
text(-1.3 81.4 "65", size(small))
text(-1.3 93.9 "21", size(small));
#delimit cr

				graph save "output/fig_01", replace
				graph export "output/fig_01.emf", replace
				graph export "output/fig_01.pdf", replace	





